﻿#define _CRT_SECURE_NO_WARNINGS

//回调函数
//#include <stdio.h>
//void menu()
//{
//	printf(" 0、exit  \n");
//	printf(" 1、Add   \n");
//	printf(" 2、Sub   \n");
//	printf(" 3、Mul   \n");
//	printf(" 4、Div   \n");
//}
//int Add(int x, int y)
//{
//	return x + y;
//}
//int Sub(int x, int y)
//{
//	return x - y;
//}
//int Mul(int x, int y)
//{
//	return x * y;
//}
//int Div(int x, int y)
//{
//	return x / y;
//}
//void calc(int(*pf)(int x, int y))
//{
//	int x = 0;
//	int y = 0;
//	printf("请输入两个操作数：");
//	scanf("%d%d", &x, &y);
//	int ret = pf(x, y);
//	printf("%d\n", ret);
//
//}
//int main()
//{
//	int input = 0;
//	int x, y;
//	do
//	{
//		menu();
//		printf("请选择：>");
//		scanf("%d", &input);
//		switch(input)
//		{
//		case 0:
//			printf("退出计算器\n");
//			break;
//		case 1:
//			calc(Add);
//			break;
//		case 2:
//			calc(Sub);
//			break;
//		case 3:
//			calc(Mul);
//			break;
//		case 4:
//			calc(Div);
//			break;
//		default:
//			printf("输入错误，请重新输入！\n");
//			break;
//		}
//	} while (input);
//	return 0;
//}


 
//使⽤qsort函数排序整型数据
//void qsort (void* base, size_t num, size_t size,int (*compar)(const void*, const void*));
//#include <stdlib.h>
//#include <stdio.h>
//int cmp_int(const void* p1, const void* p2)
//{
//	return (*(int*)p1) - (*(int*)p2);
//}
//void print_arr(int arr[], int sz)
//{
//	int i = 0;
//	for (i = 0; i < sz; i++)
//	{
//		printf("%d ", arr[i]);
//	}
//}
//int main()
//{
//	int arr[] = { 9,8,7,6,5,4,3,2,1,0 };
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	qsort(arr, sz, sizeof(arr[0]), cmp_int);
//	print_arr(arr,sz);
//	return 0;
//}




//使⽤qsort排序结构数据
//void qsort (void* base, size_t num, size_t size,int (*compar)(const void*, const void*));

//#include <stdio.h>
//#include <stdlib.h>
//#include <string.h>
//struct stu
//{
//	char name[20];
//	int age;
//};
//int cmp_by_name(const void* buf1,const void* buf2)
//{
//	return strcmp(((struct stu*)buf1)->name, ((struct stu*)buf2)->name);
//}
//int cmp_by_age(const void* buf1, const void* buf2)
//{
//	return (((struct stu*)buf1)->age) - (((struct stu*)buf2)->age);
//}
//void print_struct(struct stu s[], int sz)
//{
//	for (int i = 0; i < sz; i++)
//	{
//		printf("%s %d\n", s[i].name, s[i].age);
//	}
//}
//void test1()
//{
//	struct stu s[] = { { "zhangsan",33 }, { "lisi", 25 },{ "likezhen", 21 },{"zoutianlei",19}};
//	int sz = sizeof(s) / sizeof(s[0]);
//	qsort(s, sz, sizeof(s[0]), cmp_by_name);
//	print_struct(s,sz);
//}
//void test2()
//{
//	struct stu s[] = { { "zhangsan",33 }, { "lisi", 25 },{ "likezhen", 21 },{"zoutianlei",19} };
//	int sz = sizeof(s) / sizeof(s[0]);
//	qsort(s, sz, sizeof(s[0]), cmp_by_age);
//	print_struct(s, sz);
//}
//int main1()
//{
//	//test1();
//	//test2();
//	return 0;
//}